#pragma warning disable 108
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using Cephei;
using Cephei.Core;
using Cephei.Core.Generic;
using Microsoft.FSharp.Core;
using Cephei.QL.Times;
using Cephei.QL.Termstructures;
using Cephei.QL.Indexes;
namespace Cephei.QL.Cashflows
{
    /// <summary> 
	/// 
	/// </summary>
    [Guid ("ECA527D6-41FE-4053-82E7-CE8036306112"),ComVisible(true)]
	public interface IRangeAccrualFloatersCoupon : Cephei.QL.Cashflows.IFloatingRateCoupon
	{
		///////////////////////////////////////////////////////////////
        // Methods
        //
        /// <summary> 
		/// 
		/// </summary>
		 Double EndTime {get;}
        /// <summary> 
		/// 
		/// </summary>
		 Double LowerTrigger {get;}
        /// <summary> 
		/// 
		/// </summary>
		 Cephei.Core.IVector<DateTime> ObservationDates {get;}
        /// <summary> 
		/// 
		/// </summary>
		 UInt64 ObservationsNo {get;}
        /// <summary> 
		/// 
		/// </summary>
		 Cephei.QL.Times.ISchedule ObservationsSchedule {get;}
        /// <summary> 
		/// 
		/// </summary>
		 Cephei.Core.IVector<Double> ObservationTimes {get;}
        /// <summary> 
		/// 
		/// </summary>
		 Double PriceWithoutOptionality(Cephei.QL.Termstructures.IYieldTermStructure discountCurve);
        /// <summary> 
		/// 
		/// </summary>
		 Double StartTime {get;}
        /// <summary> 
		/// 
		/// </summary>
		 Double UpperTrigger {get;}
    }   

    /// <summary> 
	///  Factory
	/// </summary>
   	[ComVisible(true)]
    public interface IRangeAccrualFloatersCoupon_Factory 
    {
        ///////////////////////////////////////////////////////////////
        // Factory methods
        //
        /// <summary> 
		/// ===========================================================================// RangeAccrualFloatersCoupon                        // ===========================================================================
		/// </summary>
	    IRangeAccrualFloatersCoupon Create (DateTime paymentDate, Double nominal, Cephei.QL.Indexes.IIborIndex index, DateTime startDate, DateTime endDate, UInt32 fixingDays, Cephei.QL.Times.IDayCounter dayCounter, Double gearing, Double spread, DateTime refPeriodStart, DateTime refPeriodEnd, Cephei.QL.Times.ISchedule observationsSchedule, Double lowerTrigger, Double upperTrigger, Cephei.QL.Cashflows.IFloatingRateCouponPricer QL_Pricer);
    }
}

